package net.crisps.cloud.log.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;


/**
 * 操作日志
 *
 * @author tanghm
 */
@Documented
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Repeatable(OperateLogs.class)
public @interface OperateLog {
    // 业务类型
    String bizType() default "";

    // 业务id 支持spel表达式
    String bizId() default "";

    // 功能标题
    String title();

    // 功能描述 支持spel表达式
    String description() default "";

    // 变更前
    String before() default "";

    // 变更后
    String after() default "";

    // 满足条件记录
    boolean condition() default true;

}
